cover: Gracefully handle failures to collect coverage data #8742
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
On platforms that support native coverage (introduced in Erlang/OTP 27), the
cover
module did not properly handle failed calls tocode:get_coverage/2
. The call to that function will fail if the module in question has been reloaded or unloaded.For example, if
cover:export/1
was called and a module had been reloaded on a remote node (for example bymeck
), thecover:export/1
call would never return.Because the current API for
cover
has no good way to report this kind of error, we will fix the issue by logging the failed call using thelogger
module and otherwise ignore the failure. That implies that there will be no coverage information for modules that have been reloaded. That is compatible with the behavior ofcover
prior to Erlang/OTP 27.Closes #8691